package org.budo.filestore.api;

import java.io.InputStream;

/**
 * @author lmw
 */
public interface FileStore {
    String NO_DOWNLOAD_URL = "org.budo.filestore.api.FileStore#NO_DOWNLOAD_URL";

    /**
     * 生成一个上传时用到的临时凭证，可能没有，比如FTP
     */
    String uploadToken(UploadRequest request);

    /**
     * 经过服务器上传
     */
    UploadResponse upload(UploadRequest request);

    /**
     * 删除
     */
    DeleteResponse delete(DownloadRequest request);

    /**
     * 生成下载地址
     */
    String downloadUrl(DownloadRequest request);

    /**
     * 下载文件流
     * 
     * @return 文件不存在时返回空
     */
    InputStream downloadStream(DownloadRequest request);

    /**
     * 读取文件信息
     */
    FileMeta getFileMeta(DownloadRequest request);
}
